package root.electronclass.electronclass.common.util;

import android.util.Log;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;

/**
 * @ClassName TODO
 * @Description TODO
 * @Author caofc
 * @Date 2023/3/19 20:16
 */
public class DateUtils {

    public static String getDate1(){
        long time = System.currentTimeMillis();
        SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd");
        Date d1 = new Date(time);
        String t1 = format.format(d1);
        return t1;
    }
    /**
     * 获取今天星期几
     * @return
     */
    public static String getWeek() {
        Calendar cal = Calendar.getInstance();
        int i = cal.get(Calendar.DAY_OF_WEEK);
        switch (i) {
            case 1:
                return "周日";
            case 2:
                return "周一";
            case 3:
                return "周二";
            case 4:
                return "周三";
            case 5:
                return "周四";
            case 6:
                return "周五";
            case 7:
                return "周六";
            default:
                return "";
        }
    }

    /**
     * 将date转换成字符串
     *
     * @param date    日期
     * @param pattern 日期的目标格式
     * @return
     */
    public static String dateToString(Date date, String pattern) {
        String           string = "";
        SimpleDateFormat sdf    = new SimpleDateFormat(pattern, Locale.CHINA);
        string = sdf.format(date);
        return string;
    }

    /**
     * 获取当前时间
     *
     * @return 返回当前时间，格式2017-05-04	10:54:21
     */
    public static String getNowDate(DatePattern pattern) {
        String           dateString = null;
        Calendar         calendar   = Calendar.getInstance();
        Date             dateNow    = calendar.getTime();
        SimpleDateFormat sdf        = new SimpleDateFormat(pattern.getValue(), Locale.CHINA);
        dateString = sdf.format(dateNow);
        return dateString;
    }

    /**
     * 返回明天
     *
     * @return
     */
    public static String tomorrow() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar         now = Calendar.getInstance();
        now.setTime(new Date());
        now.add(now.DATE, 1);
        String date = sdf.format(now.getTime());
        return date;
    }


    /**
     * String 转 data
     *
     * @param str
     * @return
     */
    public static Date stringToDate(String str) {
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = null;
        try {
            date = format.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        Log.i("StringUitl", "StringUitl:" + date);
        return date;
    }

    //中考倒计时
    public static String CZTime(){
        Date currentDate = new Date();

        // 创建一个Calendar对象并设置为当前日期
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(currentDate);

        // 获取当前年份
        int currentYear = calendar.get(Calendar.YEAR);

        // 设置高考日期为每年的6月7日
        calendar.set(Calendar.MONTH, Calendar.JUNE); // 6代表17月
        calendar.set(Calendar.DAY_OF_MONTH, 17);

        // 如果当前日期已经超过了高考日期，将高考日期设置为下一年的6月17日
        if (currentDate.after(calendar.getTime())) {
            currentYear++; // 进入下一年
            calendar.set(Calendar.YEAR, currentYear);
        }

        // 获取下一次高考日期
        Date nextExamDate = calendar.getTime();
        // 获取当前日期
        Date currentDate1 = new Date();

        // 计算距离高考的天数
        long timeUntilExam = nextExamDate.getTime() - currentDate1.getTime();
        long daysUntilExam = timeUntilExam / (1000 * 60 * 60 * 24);
        return "中考倒计时" + daysUntilExam + "天";

    }



    //高考倒计时
    public static String GKTime(){
        Date currentDate = new Date();

        // 创建一个Calendar对象并设置为当前日期
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(currentDate);

        // 获取当前年份
        int currentYear = calendar.get(Calendar.YEAR);

        // 设置高考日期为每年的6月7日
        calendar.set(Calendar.MONTH, Calendar.JUNE); // 6代表6月
        calendar.set(Calendar.DAY_OF_MONTH, 7);

        // 如果当前日期已经超过了高考日期，将高考日期设置为下一年的6月7日
        if (currentDate.after(calendar.getTime())) {
            currentYear++; // 进入下一年
            calendar.set(Calendar.YEAR, currentYear);
        }

        // 获取下一次高考日期
        Date nextExamDate = calendar.getTime();
        // 获取当前日期
        Date currentDate1 = new Date();

        // 计算距离高考的天数
        long timeUntilExam = nextExamDate.getTime() - currentDate1.getTime();
        long daysUntilExam = timeUntilExam / (1000 * 60 * 60 * 24);
        return "高考倒计时" + daysUntilExam + "天";

    }





    /**
     * 枚举日期格式
     */
    public enum DatePattern {

        /**
         * 格式："yyyy-MM-dd HH:mm:ss"
         */
        ALL_TIME {
            public String getValue() {
                return "yyyy-MM-dd HH:mm:ss";
            }
        },
        /**
         * 格式："yyyy-MM"
         */
        ONLY_MONTH {
            public String getValue() {
                return "yyyy-MM";
            }
        },
        /**
         * 格式："yyyy-MM-dd"
         */
        ONLY_DAY {
            public String getValue() {
                return "yyyy-MM-dd";
            }
        },
        /**
         * 格式："yyyy-MM-dd HH"
         */
        ONLY_HOUR {
            public String getValue() {
                return "yyyy-MM-dd HH";
            }
        },
        /**
         * 格式："yyyy-MM-dd HH:mm"
         */
        ONLY_MINUTE {
            public String getValue() {
                return "yyyy-MM-dd HH:mm";
            }
        },
        /**
         * 格式："MM-dd"
         */
        ONLY_MONTH_DAY {
            public String getValue() {
                return "MM-dd";
            }
        },
        /**
         * 格式："MM-dd HH:mm"
         */
        ONLY_MONTH_SEC {
            public String getValue() {
                return "MM-dd HH:mm";
            }
        },
        /**
         * 格式："HH:mm:ss"
         */
        ONLY_TIME {
            public String getValue() {
                return "HH:mm:ss";
            }
        },
        /**
         * 格式："dd"
         */
        ONLY_DD {
            public String getValue() {
                return "dd";
            }

        },
        /**
         * 格式："HH:mm"
         */
        ONLY_HOUR_MINUTE {
            public String getValue() {
                return "HH:mm";
            }
        };


        public abstract String getValue();
    }

}
